package com.gjy.spring.aspect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author gjy
 * @version 1.0
 * @since 2025-03-03 19:21:53
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface OperationAudit {

    /**
     * 操作类型标识
     */
    String operationCode();

    /**
     * 操作描述（支持 SpEL 表达式）
     */
    String description() default "";

    /**
     * 操作者表达式
     */
    String operator() default "@auditOperator.getName";

    /**
     * 操作前状态
     */
    String preState() default "";

    /**
     * 操作后状态
     */
    String postState() default "";

}
